package party.lovey.remote.amq;


import party.lovey.remote.utils.Consts;
import party.lovey.remote.utils.SerializeUtil;

import javax.jms.*;

/**
 * activemq message sender
 */
public class Sender {


    private static Session session;


    /**
     * send binary message
     * @param queue
     * @param msg
     */
    public static void sendBinaryMessage(String queue, byte[] msg) {

        session=SessionFactory.getSenderSession();
        // Destination ：消息的目的地;消息发送给谁.
        Destination destination;
        // MessageProducer：消息发送者
        MessageProducer producer;
        try {
            destination = session.createQueue(queue);
            // 得到消息生成者【发送者】
            producer = session.createProducer(destination);
            // 设置不持久化，此处学习，实际根据项目决定
            producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
            // 构造消息，此处写死，项目就是参数，或者方法获取

            BytesMessage message = session.createBytesMessage();
            message.writeBytes(msg);
            message.setLongProperty(Consts.LENGTH,msg.length);

            producer.send(destination, message);
            // 发送消息到目的地方
            System.out.println("发送消息：" + "huhaichao 发送的消息");
            session.commit();
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }

    /**
     * send object message
     * @param queue
     * @param o
     */
    public static void sendObjectMessage(String queue,Object o){
        // Destination ：消息的目的地;消息发送给谁.
        Destination destination;
        // MessageProducer：消息发送者
        MessageProducer producer;
        try {
            destination = session.createQueue(queue);
            // 得到消息生成者【发送者】
            producer = session.createProducer(destination);
            // 设置不持久化，此处学习，实际根据项目决定
            producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
            // 构造消息，此处写死，项目就是参数，或者方法获取
            TextMessage message = session.createTextMessage(SerializeUtil.toXML(o));
            producer.send(destination, message);
            // 发送消息到目的地方
            System.out.println("发送消息：" + "huhaichao 发送的消息");
            session.commit();
        } catch (JMSException e) {
            e.printStackTrace();
        }

    }
}